
// process

// 我们再写命令行工具的时候优先找找运行的配置文件，逐级向上查找  
// 例如 webpack (会去当前目录下查找这个webpack.config.js 文件)   vite(vite.config,js)


//  process.cwd() 返回 Node.js 进程的当前工作目录。
// console.log(process.cwd());  // /Users/adminx/Desktop/Ikki-study/ikki-zf

const path = require('path');
console.log(process.cwd(), path.resolve());  // 如果为了方便 完全可以只使用process.cwd 获取路径
// global上的属性,可以直接访问process    pwd print working directory



// env(enveriorment):当前的是环境变量   我们常用于webpack环境区别  
// 环境变量的设置是在当前命令中设置的，切换到其他地方执行就不一样了
// 先设置环境变量再使用，在windows下可以使用 set 命令，对于mac可以使用export命令
// 例如终端输入 export a = 1
// console.log(process.env.a); //1

// 对于mac和win中的设置环境变量不同，我们可以使用cross-env来进行环境设置
// 再在package.json中的script进行设置
// 例如
// "scripts": {
//     "dev": "cross-env NODE_ENV=dev node process.js",
//     "build": "cross-env NODE_ENV=prod node process.js"
// },
// 再代码中执行
// let baseURL = ''
// if (process.env.NODE_ENV === 'dev') {
//     baseURL = 'http://localhost:3000'; // 服务器在本地市话是3000
// } else {
//     baseURL = 'http://39.106.175.189'
// }
// console.log(baseURL); 


// argv  通过argv属性来获取用户传递的参数 
// 例如：webpack --config a 1 --port 3000 ...

// 默认argv是一个数组 1.可执行文件 2.执行的文件  other 所有用户的参数。。。。
console.log(process.argv); //['/usr/local/bin/node','/Users/adminx/Desktop/Ikki-study/ikki-zf/1.Node/8.process/a.js']


let args = process.argv.slice(2);
// 命令行中输入 node a.js --config nihao 1 --haele 2132321
// console.log(args);  //[ '--config', 'nihao', '1' ]
let r = args.reduce((memo,current,index,arr)=>{
    if(current.startsWith('--')){
        memo[current.slice(2)] = arr[index+1];
    }
    return memo
},{})
console.log(r); //{ config: 'nihao' } 


// 常用开发中可以使用commander 来实现命令行工具  


// const { program } = require('commander'); // 用别人包来解析参数
// // const pkg = require('./package.json')
// program.name('zf');
// program.usage('sadsada')
// // program.version(pkg.version)

// program.option('-c|--config <x>','config file')
// program.option('-p|--port <c>','sever port')
// program.command('create [projectName]').action((args)=>{
//     console.log(args)
// })
// program.on('--help',function(){
//     console.log('\r\n my help')
// })

// program.parse(process.argv)
// console.log(program.opts()); // commander 内部就是解析process.argv的

